#!/usr/local/bin/pythonw
# -*- coding: utf-8 -*-
import re
import sys
import urllib
import os
import hashlib
import time
requete1='http://medusa.jrc.it/medisys/dynamic?language='
requete1bis='&page=1&edition=searchresults&option=&section=&articleType=all&foralert=&forsource=&duplicates=false&queryType=simple&lang='
requete1ter='&dateFrom=&dateTo=&atLeast='
requete2='&all=&exact=&not=&geoId=&countryId=&provinceId=&regionId=&sourceRank='
compteur=0
liste=[]

def indexer(id_fichier):
    ofi=open(sortie,'a')
    print >>ofi,id_fichier

def telecharger(fichier,source):
    texte=urllib.urlopen(fichier)
    lignes=texte.read()
    dossier='Corpora/'+source
    try:
        os.mkdir(dossier)
    except:
        print 'dossier ',source, 'existe déjà'
    id=hashlib.sha224(fichier).hexdigest()
    nom=id+'.html'
    chemin=dossier+'/'+nom
    source=urllib.urlopen(fichier)
    contenu=source.read()
    wfi=open(chemin,'w')
    print >>wfi,contenu
    wfi.close()
    print nom
    return nom

def browse(requete):
    a=urllib.urlopen(requete)
    source=a.read()
    articles=re.split('articlebox_big',source)
    compte=1
    while compte<len(articles):
        encours=articles[compte]
        patt1=re.compile(u'([^<]+)OnShowArticle\(\'(?P<link>[^"]+)\'')
        patt2=re.compile(u'([^<]+)javascript:showsourcedef\(\'(?P<src>[^"]+)\'\)')
        patt3=re.compile(u'([^<]+)</a>(?P<when>[^"]+)CET')
        patt4=re.compile(u'([^<]+)headline_link">(?P<title>[^"]+)</a>')
        patt5=re.compile(u'([^<]+)center_leadin">(?P<start>[^"]+)</p>')
        test1=re.search(patt1,encours)
        test2=re.search(patt2,encours)
        test3=re.search(patt3,encours)
        test4=re.search(patt4,encours)
        test5=re.search(patt5,encours)
        try:
            adresse=test1.expand(r'\g<link>')
        except:adresse=' '
        try:
            source=test2.expand(r'\g<src>')
        except:source='source_inconnue'
        try:
            date=test3.expand(r'\g<when>')
        except:date='none'
        try:
            titre=test4.expand(r'\g<title>')
        except:
            titre='sanstitre'
        try:
            debut=test5.expand(r'\g<start>')
            susp=re.compile('(\.){2,8}')
            debut=re.sub(susp,'',debut)
            debut=re.sub('\n','',debut)
        except:
            debut=' '
        if adresse not in liste:
            print source
            liste.append(adresse)
            out=source+'%*'+titre+'%*'+adresse
            wfi=open(sortie,'a')
#            print>> wfi,out
            print>> wfi,out
            resume=titre
            nom=telecharger(adresse,source)
            id_fichier=adresse+';'+date+';'+langue+';'+nom
            indexer(id_fichier)
        compte=compte+1

if __name__ == "__main__":
    langue=sys.argv[1]
    print 'On chope du corpus:',langue
temps=time.clock()
temps=str(temps)
id_index=hashlib.sha224(temps).hexdigest()
sortie='Corpora/index'+id_index
cfi=open(sortie,'w')
cfi.close()
listek='Motscles/motscles_'+langue
ofi=open(listek,'r')
motscles=ofi.readlines()

for mot in motscles:
    print mot
    requete=requete1+langue+requete1bis+langue+requete1ter+mot+requete2 
    browse(requete)
